//Menu.java
//Controle do menu
package controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;

/**
 * @author Diego Heusser
 * @author Eder Schramm
 */
public class Menu {

    private visao.Menu menu;

    public Menu() {
        menu = new visao.Menu();
        ouvintes();
    }

    private void ouvintes() {
        menu.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                int opcao = JOptionPane.showConfirmDialog(menu, "Voce tem certeza que quer sair?", "Sair", JOptionPane.YES_NO_OPTION);
                if (opcao == JOptionPane.YES_OPTION) {
                    System.exit(0);
                }
            }
        });

        menu.miAutomovel.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dao.DAOFactory factory = dao.DAOFactory.getDAOFactory();
                if (factory.getMotoristaDAO().listar().isEmpty()) {
                    JOptionPane.showMessageDialog(menu, "Cadastre antes um motorista!");
                } else {
                    controle.Automovel controlador = new controle.Automovel(menu);
                    controlador.cadastrar();
                    menu.setVisible(false);
                }
            }
        });
        menu.miMotorista.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                controle.Motorista controlador = new controle.Motorista(menu);
                controlador.cadastrar();
                menu.setVisible(false);
            }
        });
        menu.miConMotorista.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                controle.Motorista controlador = new controle.Motorista(menu);
                controlador.consultar();
            }
        });
        menu.miConAutomovel.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                controle.Automovel controlador = new controle.Automovel(menu);
                controlador.consultar();
            }
        });
        menu.miRelMotorista.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Relatorio rel = new Relatorio();
                try {
                    rel.relatorioMotorista();
                    menu.toBack();
                } catch (Exception ex) {
                    ex.printStackTrace();
                    JOptionPane.showMessageDialog(null, ex.getMessage(), "Erro",
                            JOptionPane.ERROR_MESSAGE);
                }
            }
        });
        menu.miRelAutomovel.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Relatorio rel = new Relatorio();
                try {
                    rel.relatorioAutomovel();
                    menu.toBack();
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(menu, ex.getMessage(), "Erro",
                            JOptionPane.ERROR_MESSAGE);
                }
            }
        });
        menu.miCriarTabelas.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    Motorista m = new Motorista(menu);
                    Automovel a = new Automovel(menu);
                    m.criarTabela();
                    a.criarTabela();
                    JOptionPane.showMessageDialog(menu, "Tabelas criadas com sucesso");
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(menu, ex.getMessage(), "Erro",
                            JOptionPane.ERROR_MESSAGE);
                }
            }
        });
        menu.miApagarDados.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Motorista m = new Motorista(menu);
                Automovel a = new Automovel(menu);
                if (a.apagarDados() && m.apagarDados()) {
                    JOptionPane.showMessageDialog(menu, "Dados removidos!");
                } else {
                    JOptionPane.showMessageDialog(menu, "Não foi possível apagar os dados!");
                }
            }
        });
    }

    public void executar() {
        menu.setVisible(true);
    }
}
